<?php
require 'vender/flight/Flight.php';
require 'vender/HTTPRequest.php';

// 获取产品列表
Flight::route('GET /@text', function($text){
	header("content-type:text/html;charset=utf-8");  //指定下字符集
	if (empty($text)) {
		echo '无参数';
	} else {
		// 根据单号获取公司
		// $url = 'http://www.kuaidi100.com/autonumber/autoComNum?text=' . $text;
		// http://m.kuaidi100.com/apicenter/kdquerytools.do?method=autoComNum&text=3703914934052
		$url = 'http://m.kuaidi100.com/apicenter/kdquerytools.do?method=autoComNum&text=' . $text;
		// Flight::render('kd.php', array('text' => $text));
		$http = new HTTPRequest('www.kuaidi100.com');
		$http->setUrl($url);
		$http->execute();
		$result_company = $http->getResponseText();
		$http->close();
		// echo $result_company;
		// die();
		// 测试公司列表
		$msg = array();
		$find = false;
		if (!empty($result_company)) {
			$result_company = json_decode($result_company);
			if (!empty($result_company->auto)) {
				foreach ($result_company->auto as $company) {
					// 获取单号行程
					// $url = 'http://www.kuaidi100.com/query?type=debangwuliu&postid=5394535138&id=1&valicode=&temp=0.4044069761628841';
					// $url = 'http://www.kuaidi100.com/query?type=shentong&postid=3703914934052&temp=0.6878474083837463';
					$url = 'http://www.kuaidi100.com/query?type=';
					$url .= $company->comCode;
					$url .= '&postid=';
					// $url .= $result_company->auto->num;
					$url .= $text;
					$url .= '&temp=0.';
					$url .= time();
					// echo $url;
					$http->setUrl($url);
					$http->execute();
					$result_post = $http->getResponseText();
					$http->close();
					// echo $result_post;
					if (!empty($result_post)) {
						$ismobile = ismobile();
						$result_post = json_decode($result_post);
						if ($result_post->status == '200') {//有公司，有行程
							// echo '<pre>';
							// print_r($result_post->data);
							// echo '</pre>';
							$msg = array(
								'num' => $result_post->nu,
								'companycode' => $result_post->com,
								'ischeck' => $result_post->ischeck,
								'data' => $result_post->data,
							);
							$find = true;
							break;
						} else {// 错误信息：错误公司，无行程
							$msg = array(
								'num' => $text,
								'status' => $result_post->status,
								'msg' => $result_post->message,
							);
						}
					}
				}
			} else {//无公司
				$msg = array(
					'num' => $text,
					'msg' => '未找到该运单号所属快递公司',
				);
			}
		} else {//无返回
			$msg = array(
				'num' => $text,
				'msg' => '服务器未返回信息',
			);
		}
		// 输出信息
		if ($find) {
			Flight::render((ismobile() ? 'm/index' : 'index') , $msg);
		} else {
			Flight::render((ismobile() ? 'm/msg' : 'msg') , $msg);
		}
	}
});

Flight::route('*', function(){
    echo 'hello world!';
});

Flight::start();


// functions

/**
* 是否移动端访问访问
*
* @return bool
*/
function ismobile()
{
	// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
	if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
	{
		return true;
	}
	// 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
	if (isset ($_SERVER['HTTP_VIA']))
	{
		// 找不到为flase,否则为true
		return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
	}
	// 脑残法，判断手机发送的客户端标志,兼容性有待提高
	if (isset ($_SERVER['HTTP_USER_AGENT']))
	{
		$clientkeywords = array (
			'nokia',
			'sony',
			'ericsson',
			'mot',
			'samsung',
			'htc',
			'sgh',
			'lg',
			'sharp',
			'sie-',
			'philips',
			'panasonic',
			'alcatel',
			'lenovo',
			'iphone',
			'ipod',
			'blackberry',
			'meizu',
			'android',
			'netfront',
			'symbian',
			'ucweb',
			'windowsce',
			'palm',
			'operamini',
			'operamobi',
			'openwave',
			'nexusone',
			'cldc',
			'midp',
			'wap',
			'mobile'
		);
		// 从HTTP_USER_AGENT中查找手机浏览器的关键字
		if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
		{
			return true;
		}
	}
	// 协议法，因为有可能不准确，放到最后判断
	if (isset ($_SERVER['HTTP_ACCEPT']))
	{
		// 如果只支持wml并且不支持html那一定是移动设备
		// 如果支持wml和html但是wml在html之前则是移动设备
		if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))
		{
			return true;
		}
	}
	return false;
}

